package com.nfcuttings.presuvinil.visualactivities;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;

import com.nfcuttings.presuvinil.Material;
import com.nfcuttings.presuvinil.R;
import com.nfcuttings.presuvinil.Utils;
import com.nfcuttings.presuvinil.database.MaterialDataSource;
import com.nfcuttings.presuvinil.database.PropiedadesDataSource;

public class PresupuestadorAct extends Activity {

	private EditText editAltura,editCantidad, editCantXLinea;
	private EditText editHoras;
	protected double horasEstimadas;
	private TextView txtCostoUnitario;
	private TextView txtCostoCantidad;
	private TextView txtCostoTotal;
	private Spinner materiales;
	private Material materialSeleccionado;
	private double alturaIngresada;
	private int cantidadIngresada;
	private int cantidadXLinea;
	private Button btncalcular;


	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		editAltura   = (EditText) findViewById(R.id.editAltura);   
		editCantidad = (EditText) findViewById(R.id.editCantidad); 
		editCantXLinea = (EditText) findViewById(R.id.editCantXLinea); 
		editHoras = (EditText) findViewById(R.id.editCantHoras); 
		materiales = (Spinner) findViewById(R.id.material);
		
		materiales.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){

			@Override
			public void onItemSelected(AdapterView<?> parent, View view,
					int pos, long id) {

				materialSeleccionado = (Material) parent.getItemAtPosition(pos);

			}

			@Override
			public void onNothingSelected(AdapterView<?> arg0) {

			}});
		btncalcular = (Button)findViewById(R.id.calcular);

		btncalcular.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				try {
					alturaIngresada = Double.valueOf(editAltura.getText().toString());
					cantidadIngresada = Integer.valueOf(editCantidad.getText().toString());
					cantidadXLinea = Integer.valueOf(editCantXLinea.getText().toString());
					horasEstimadas = Integer.valueOf(editHoras.getText().toString());
					calcularPresupuesto();
				} catch (Exception e) {
					mostrarMensage("Error, falta ingresar alguno de los campos requeridos.");
				}
			}

			
		});
		txtCostoUnitario = (TextView) findViewById(R.id.txtCostoUnidad); 
		txtCostoCantidad = (TextView) findViewById(R.id.txtCostoCantidad);
		txtCostoTotal = (TextView) findViewById(R.id.txtTotal);
	}
	
	private void mostrarMensage(String string) {
		AlertDialog.Builder dialog = new AlertDialog.Builder(this);
		 
		dialog.setMessage(string);
		dialog.setCancelable(true);
		
		dialog.show();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	private void calcularPresupuesto(){
		double costoUnitario = ((alturaIngresada/cantidadXLinea)*(materialSeleccionado.getCostoxmetro()/100));
		double costoXCantidad = costoUnitario * cantidadIngresada;
		txtCostoCantidad.setText(String.valueOf(Utils.obtenerValorRedondeado(costoXCantidad))); 
		txtCostoUnitario.setText(String.valueOf(Utils.obtenerValorRedondeado(costoUnitario)));
		txtCostoTotal.setText(String.valueOf(Utils.obtenerValorRedondeado(costoXCantidad+(horasEstimadas*PropiedadesDataSource.getDataSource(this).getValorHora()))));

	}
	
	 @Override
	    public boolean onOptionsItemSelected(MenuItem item) 
	    {
	        switch (item.getItemId()) 
	        {
	            case R.id.action_materialabm:
	                mostrarMaterialABM();
	                return true;
	            case R.id.action_propiedades:
	            	mostrarPropiedades();
	                return true;
//	            case R.id.menu_linterna_apagar:
//	            	apagarLinternaAndroid();
//	                return true;
//	            case R.id.menu_visitar_web:
//	            	visitarURL("http://www.ajpdsoft.com");
//	                return true;               
	                
	            default:
	            	return false;
	        }
	    }

	private void mostrarMaterialABM() {
		Intent intent = new Intent(PresupuestadorAct.this, MaterialABMAct.class);
        startActivity(intent);
	}
	
	private void mostrarPropiedades() {
		Intent intent = new Intent(PresupuestadorAct.this, PropiedadesAct.class);
        startActivity(intent);
	}

	/* (non-Javadoc)
	 * @see android.app.Activity#onResume()
	 */
	@Override
	protected void onResume() {
		MaterialDataSource datasource = MaterialDataSource.getDataSource(this);
		datasource.open();
		ArrayAdapter<Material> adapter = new ArrayAdapter<Material>(this, android.R.layout.simple_spinner_dropdown_item
				, datasource.getAllMaterials()); 
		datasource.close();
		
		materiales.setAdapter(adapter);
		super.onResume();
	}
	
	

}
